"""
    shi-tomas检点检测
        cv.goodFeaturesToTrack(image, maxcorners, qualityLevel, minDistance)
            参数：
                image:输入灰度图像。
                maxCorners:获取角点数的数目
                qualityLevel:该参数指出最低可接受的角点质量水平，在0-1之间
                minDistance:角点之间最小的欧式距离，避免得到相邻特征点
            返回：
                Corners:搜索到的角点，在这里所有低于质量水平的角点被排除掉，然后把合格的角点按质量
                排序，然后将质量较好的角点附近（小于最小欧式距离）的角点删掉，最后找到maxCorners个角点返回
"""
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

# 1. 读取图像，并转换成灰度图像
img = cv.imread("image/tv.jpg")
gray = cv.cvtColor(img, cv.COLOR_BGRA2GRAY)

# 2. 角点检测
corners = cv.goodFeaturesToTrack(gray, 1000, 0.01, 10)

# 3. 绘制角点
for i in corners:
    x, y = i.ravel()
    cv.circle(img, (int(x), int(y)), 2, (0, 0, 255), -1)

# 4. 图像显示
plt.figure(figsize=(10, 8), dpi=100)
plt.imshow(img[:, :, ::-1]), plt.title("shi-tomas角点检测")
plt.xticks([]), plt.yticks([])
plt.show()


